There are many occasions where it is desirable to determine if one file is similar to another file or if one data object is similar to another data object. For example, in the field of malware detection, it can be useful to determine if a file or a portion of a file is similar to a file that is known to contain malware, or is known to be free of malware. Other applications include determining similarity of object code libraries or executable files, or determining similarity of event logs.